package nextel.usuario.mvc;

import com.nextel.gui.gauge.FrmGaugeProcesar;
import com.nextel.gui.gauge.Procesar;
import com.nextel.ui.OHandset;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.ODialogListener;
import javax.microedition.lcdui.Image;
import pe.com.nextel.main.MVCAction;
import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OScrollList;
import com.nextel.ui.OSoftKey;
import nextel.Configuracion;
import nextel.usuario.ControlUsuario;
import nextel.ruta.ControlRuta;
import nextel.visita.ControlVisita;
import pe.com.nextel.idioma.IdiomaManager;

/**
 * Menu del aplicativo
 * @author Edgard Espinoza
 * @version 1.0
 */
public class MVCMenu extends MVCAction implements OListenerKey, ODialogListener, Procesar {

    private OScrollList lstMenu;
    private OSoftKey cmdNull,  cmdExit,  cmdAyuda;
    private boolean flagDobleClick;
    int indiceSelection;

    protected void createView() {

        cmdNull = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SEGUIR));
        cmdExit = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SALIR));
        cmdAyuda = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_MENU_AYUDA));

        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_TITULO).toUpperCase(), OUILook.PLAIN_SMALL_TITLE);

        formulario.addSoftKey(cmdNull);
        formulario.addSoftKey(cmdAyuda);
        formulario.addSoftKey(cmdExit);
    }

    protected void createItems() {
        try {
            flagDobleClick = true;

            String inicio = null, envio = null;
            // if(Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.ruta)){
            inicio = "1. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_LISTAR_CUENTA);
//            }else{
//                inicio="1. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_INICIAR);
//            }


            if (Configuracion.ACTIVO.equals(ControlUsuario.getInstance().currentUsuario.foto)) {
                envio = "3. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ENVIAR) + " F[" + ControlVisita.getInstance().rmsFoto.cantidadObject() + "]";
            } else {
                envio = "3. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ENVIOS);
            }


            //, "4. Avance"
            String[] options = {inicio, "2. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SINCRONIZAR), envio, "4. " + IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_AVANCE)};//( " + ControlVisita.getInstance().rmsFoto.cantidadObject() + " )"

            Image[] images = {Image.createImage("/clientes.PNG"),
                Image.createImage("/sincronizar.PNG"),
                Image.createImage("/pendientes.PNG"), Image.createImage("/efectividad.PNG")
            };//

            lstMenu = new OScrollList(formulario.getWidth(), formulario.getBodyHeight(),
                    OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
            lstMenu.isWithBorder = false;
            lstMenu.populate(options);
            lstMenu.setImages(images, formulario.getBodyHeight());

            lstMenu.listenerKey = this;

            formulario.add(lstMenu);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void performAction(OSoftKey c) {
        if (c == cmdExit) {

            destroy();
            ControlUsuario.getInstance().exitBussiness();
        } else if (c == cmdNull) {
            performKey(lstMenu.getSelectedIndex() + 1);
        } else if (c == cmdAyuda) {
            destroy();
            ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcAyuda);
        }
    }

    public void performKey(int indx) {
        if (flagDobleClick) {
            try {

                if (indx == Key.Key_OK) {
                    indx = lstMenu.getSelectedIndex() + 1;
                }
                indiceSelection = indx;

                switch (indx) {
                    case 1:
                        destroy();
                        iniciar();
                        break;

                    case 2:
                        ControlUsuario.getInstance().showConfirmacion(
                                IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_BORRAR_INFORMACION),
                                this, formulario);
                        break;

                    case 3:
                        ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_REGISTRO), this, formulario);
                        break;

                    case 4:

                        if (ControlUsuario.getInstance().hashGeneral == null) {
                            new FrmGaugeProcesar(this);
                        } else {
                            ControlUsuario.getInstance().obtenerAvance();
                        }
                        break;
                }
            } catch (Exception ex) {
                flagDobleClick = true;
                ex.printStackTrace();
            }
        }
    }

    public void botonOK() {
        if (flagDobleClick) {
            try {
                switch (indiceSelection) {
                    case 1:
                        break;
                    case 2: //Sincronizar

                        flagDobleClick = false;
                        destroy();
                        ControlVisita.getInstance().enviarSincronizacion();
                        break;

                    case 3: //Envios

                        flagDobleClick = false;
                        destroy();
                        ControlVisita.getInstance().enviarServicioTotal(true);
                        break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    public void botonCancel() {

        flagDobleClick = true;
        OHandset.getDisplay().setCurrent(formulario);
    }

    public void iniciar() {
        flagDobleClick = false;

        if (ControlUsuario.getInstance().hashGeneral == null) {
            new FrmGaugeProcesar(this);
        } else {
            ControlRuta.getInstance().obtenerRuta();
        }
    }

    public void realizarProceso() {
        try {

            ControlUsuario.getInstance().getHashListaGeneral();


            switch (indiceSelection) {
                case 1:
                    ControlRuta.getInstance().obtenerRuta();
                    break;
                case 4:
                    ControlUsuario.getInstance().obtenerAvance();
                    break;
            }


        } catch (Exception ex) {
            ex.printStackTrace();
            ControlUsuario.getInstance().showError("Error " + ex, ControlUsuario.getInstance().mvcMenu.showScreen());
        }
    }
}
